package com.t.bricks.bussiness.db.mapper.customer;

import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.t.bricks.bussiness.db.entity.customer.Customer;
import com.t.bricks.bussiness.db.entity.customer.CustomerAccount;

@Mapper
public interface CustomerMapper {
	
	/**
	 * 添加客户账户信息
	 * @Param customer
	 * @return int
	 */
	int addCustom(Customer customer);
	
	/**
	 * 添加支付账户信息
	 * @Param customerAccount
	 * @return int
	 */
	int addAccount(CustomerAccount customerAccount);

	/**
	 * 修改密码
	 * @param uId
	 * @param sOldPass
	 * @param sNewPass
	 * @param sAesPass
	 * @param iVersion
	 * @param sModifieder
	 * @return
	 */
	int editPass(
		@Param("uId") String uId,
		@Param("sOldPass") String sOldPass,
		@Param("sNewPass") String sNewPass,
		@Param("sAesPass") String sAesPass,
		@Param("iVersion") int iVersion,
		@Param("sModifieder") String sModifieder
	);

	/**
	 * 修改手势密码
	 * @param uId
	 * @param sOldPass
	 * @param sNewPass
	 * @param iVersion
	 * @param sModifieder
	 * @return
	 */
	int editSignPass(
		@Param("uId") String uId,
		@Param("sOldPass") String sOldPass,
		@Param("sNewPass") String sNewPass,
		@Param("iVersion") int iVersion,
		@Param("sModifieder") String sModifieder
	);
	
	/**
	 * 添加日志
	 * @param uId
	 * @param sOldPass 旧密码
	 * @param sNewPass 新密码
	 * @param sType 密码类型(登录或支付)
	 * @param sModifieder 操作人员
	 * @return
	 */
	int addLog(
		@Param("uId") String uId,
		@Param("sOldPass") String sOldPass,
		@Param("sNewPass") String sNewPass,
		@Param("sType") String sType,
		@Param("sModifieder") String sModifieder
	);
	
	/**
	 * 添加顾客到基本系统表中的用户表
	 * @param customer
	 * @return
	 */
	int addLoginUser(Customer customer);
	
	/**
	 * 添加用户与部门关系记录
	 * @param uId
	 * @param sDepartmentFullName
	 * @return
	 */
	int relUserAndDepartment(
		@Param("uId") String uId,
		@Param("sDepartmentFullName") String sDepartmentFullName
	);

	/**
	 * 修改用户表密码
	 * @param uId
	 * @param sOldPass
	 * @param sNewPass
	 * @param sModifieder
	 * @return
	 */
	int editPassToLoginUser(
		@Param("uId") String uId,
		@Param("sOldPass") String sOldPass,
		@Param("sNewPass") String sNewPass,
		@Param("sModifieder") String sModifieder
	);
	
	/**
	 * 删除客户账户信息
	 * @param uId 顾客编号
	 * @return int
	 */
	int delCustom(@Param("uId") String uId);
	
	/**
	 * 删除支付账户信息(积分与余额必须都为0)
	 * @param uId 顾客编号
	 * @return int
	 */
	int delAccount(@Param("uId") String uId);
	
	/**
	 * 删除基本系统表中的用户表
	 * @param uId 顾客编号
	 * @return
	 */
	int delLoginUser(@Param("uId") String uId);
	
	/**
	 * 删除用户与部门关系记录
	 * @param uId 顾客编号
	 * @return
	 */
	int delUserAndDepartment(@Param("uId") String uId);
	
	/**
	 * 根据手机号(sNo)与微信关注号查询AES密码
	 * @param sNo 手机号
	 * @param sWeChatOpenId 微信关注号
	 * @return
	 */
	String findAesPass(
		@Param("sNo") String sNo,
		@Param("sWeChatOpenId") String sWeChatOpenId
	);
	
	/**
	 * 根据手机号(sNo)判断是否与关注号进行绑定
	 * @param sNo 手机号
	 * @return
	 */
	String hasOpenId(@Param("sNo") String sNo);

	/**
	 * 绑定关注号
	 * @param uId 记录编号
	 * @param sOpenId 关注号
	 * @param sPass 当前密码
	 * @param iType 类型(1:微信)
	 * @return
	 */
	int bindingOpenId(
		@Param("uId") String uId,
		@Param("sOpenId") String sOpenId,
		@Param("iType") Integer iType,
		@Param("sAesPass") String sAesPass
	);
	
	/**
	 * 设置微信用户统一标识
	 * @param uId 用户编号
	 * @param sWechatUid 微信用户统一标识
	 * @return
	 */
	int setWechatid(
		@Param("uId") String uId,
		@Param("sWechatUid") String sWechatUid
	);
	
	/**
	 * 根据微信用户统一标识获取电话信息
	 * @param wechatid 微信用户统一标识
	 * @return
	 */
	Map<String, Object> getNoByWechatUid(@Param("sWechatUid") String sWechatUid);
	
	/**
	 * 判断微信用户唯一标识是否已经绑定
	 * @param sWechatUid 微信用户统一标识
	 * @return 返回手机号
	 */
	String hasWechatUid(@Param("sWechatUid") String sWechatUid);
	
	/**
	 * 根据微信用户唯一标识查询AES密码
	 * @param sWechatUid 微信用户统一标识
	 * @return 返回AES密码
	 */
	Map<String, Object> findAesPassByWechatUid(@Param("sWechatUid") String sWechatUid);
	
}
